1. Technical Field
This invention relates generally to a computing system in which there are multiple nodes, and more particularly to such a system in which each node has private memory generally accessible only by the node itself.
2. Description of the Prior Art
As computer systems, such as server systems, become more complex, they have been divided into different nodes that operate as separate units. Each node may have its own processors, memory, and input/output (I/O) modules. Functionality performed by a system may be divided among its various nodes, such that each node is responsible for one or more different functions. There is usually a base node, including a keyboard and display, through which a user interacts with the system itself, including the other nodes. Such systems are considered coalesced systems in that the nodes are coalesced to function as a single system. This coalescing is usually transparent to the user. The user typically requests that functionality be performed by the system as a whole, instead of by individual nodes of the system, for instance.
The memory of a node is generally divided into two different types: shared memory, and private memory. Shared memory, as its name implies, is shared among all the nodes. That is, the shared memory of one node is accessible by the other nodes of the system. Private memory of a node, conversely, is accessible only by the node itself. Generally no node, not even the base node, is able to access the private memory of another node. The private memory of a node can include flash memory, expansion read-only memory (ROM), and the memory where error logs and other node-specific information is stored. Firmware for a node is also usually stored in the private memory of the node.
Retrieving diagnostic information from a node, which involves retrieving the errors logs of a node, and updating the firmware of a node, thus must be performed on a per-node basis, instead of on a system-wide basis. Whereas other functionality may be performed for all the nodes of a system through a base node, because the base node does not have access to the private memory of the other nodes, it is unable to retrieve the diagnostic information of another node, nor update another node's firmware. Performing diagnostic and update-oriented functionality therefore must be accomplished on a per-node basis. Where there are a large number of nodes in a given system, this can be very inconvenient and time-consuming for the system administrator.
A limited solution to this problem is described in U.S. Pat. No. 5,671,356, which provides a mechanism by which a node's private resources are accessible to other nodes for pre-boot activities only. One node indicates the type of pre-boot activity to be performed on another node. This latter node is then rebooted, and during the boot process performs the pre-boot activity, accessing its private memory on behest of the former node.
However, this approach is indirect, and requires the rebooting of a node. Therefore, performing diagnostic and update-oriented functionality can still be inconvenient and time-consuming for the system administrator. Furthermore, the system of nodes is still not managed as a whole, but rather as individual nodes on a per-node basis, albeit through the base node, which is also inconvenient for the system administrator. For these described reasons, as well as other reasons, there is a need for the present invention.